#include <REG2051.H>
#include <stdio.h>

Config Timer0 = Timer, Gate = internal, Mode = 1
#define OSC_FREQ (12000000UL)
#pragma language=extended

void main (void)
{
 
T0_GATE_ = 1;
T1_GATE_ = 0 ;

sbit Buzer P^3.0;
sbit led_1 P^1.7;
sbit led_2 P^1.6; 
sbit led_3 P^1.5;
sbit led_4 P^1.4;
sbit led_5 P^1.3;
sbit led_6 P^1.2;
sbit led_7 P^1.1;
sbit led_8 P^1.0;
sbit Gate_ P^3.7;

long int Temp;
unsigned char Error;
unsigned char B1;
unsigned char B2; 
unsigned char Nled;
unsigned char Gd;

void Ledy ()
{
	unsigned char nled;
	unsigned char Gd;
}

void LEDS ()
{
	led_1 = 1;
	led_2 = 1;
	led_3 = 1;
	led_4 = 1;
	led_5 = 1;
	led_6 = 1;
	led_7 = 1;
	led_8 = 1;
}

void delay()
{
volatile int i;
for(i = 0 ; i < 500000 ; i++ );  
}  

int TIMER0 TIMER0_int;
INT0 = 1;
EX0 = 1;
IT0 = 0;
P3_0 = 0;
P3_7 = 1;
LEDS ();


do {
	Error = 0;
	TH0 = 0;
	TL0	= 0;
	Gate_ = 0;
	delay();
	Gate_ = 1;
	TR0 = 1;
	Waitms 1;
	delay();
	IE0 = 0;
	INT0;
}
do 
{
	Error.1 = TFO;
	Loop Until Error > 0;
		if Error.0 = 1 then
		LEDS = 0;
		P3_0 = 0;
	else Error.1 = 1 then
		B1 = TL0;
		B2 = TH0;
	Temp = B2 * 256;
	Temp = Temp + B1;
	if Temp < 860 then
		P1_0 = 1;
		P1_1 = 1;
		P1_2 = 1;
		P1_3 = 1;
		P1_4 = 1;
		P1_5 = 1;
		P1_6 = 1;
		P1_7 = 1;
		P3_0 = 1;
	else Temp > 859 & Temp < 2109 then
		P1_0 = 1;
		P1_1 = 1;
		P1_2 = 1;
		P1_3 = 1;
		P1_4 = 1;
		P1_5 = 1;
		P1_6 = 1;
		P1_7 = 0;
		P3_0 = 1; 
	else Temp > 2108 & Temp < 3359 then
		P1_0 = 1;
		P1_1 = 1;
		P1_2 = 1;
		P1_3 = 1;
		P1_4 = 1;
		P1_5 = 1;
		P1_6 = 0;
		P1_7 = 0;
		P3_0 = 1;
	else Temp > 3358 & Temp < 4609 then 
		P1_0 = 1;
		P1_1 = 1;
		P1_2 = 1;
		P1_3 = 1;
		P1_4 = 1;
		P1_5 = 0;
		P1_6 = 0;
		P1_7 = 0;
		P3_0 = 1; 
	else Temp > 4608 & Temp < 5859 then
		P1_0 = 1;
		P1_1 = 1;
		P1_2 = 1;
		P1_3 = 1;
		P1_4 = 0;
		P1_5 = 0;
		P1_6 = 0;
		P1_7 = 0;
		P3_0 = 0;
	else Temp > 5858 & Temp < 7109 then
		P1_0 = 1;
		P1_1 = 1;
		P1_2 = 1;
		P1_3 = 0;
		P1_4 = 0;
		P1_5 = 0;
		P1_6 = 0;
		P1_7 = 0;
		P3_0 = 0;
	else Temp > 7108 & Temp < 8359 then
		P1_0 = 1;
		P1_1 = 1;
		P1_2 = 0;
		P1_3 = 0;
		P1_4 = 0;
		P1_5 = 0;
		P1_6 = 0;
		P1_7 = 0;
		P3_0 = 0;
	else Temp 8358 & Temp 10000 then
		P1_0 = 1;
		P1_1 = 0;
		P1_2 = 0;
		P1_3 = 0;
		P1_4 = 0;
		P1_5 = 0;
		P1_6 = 0;
		P1_7 = 0;
		P3_0 = 0;
	else Temp > 9999 then 
		LEDS = 0;
		P3_0 = 0;	
}  

switch (nled)
{
	case 0 : Ledy = 255;
	case 1 : Ledy = 254;
	case 2 : Ledy = 252;
	case 3 : Ledy = 248;
	case 4 : ledy = 240;
	case 5 : Ledy = 224;
	case 6 : Ledy = 192;
	case 7 : Ledy = 128;
	case 8 : Ledy = 8;
}
switch (nled)
{
  	case 0 : Ledy = 255;
	case 1 : Ledy = 127;
	case 2 : Ledy = 63;
	case 3 : Ledy = 31;
	case 4 : ledy = 15;
	case 5 : Ledy = 7;
	case 6 : Ledy = 3;
	case 7 : Ledy = 1;
	case 8 : Ledy = 0;
}	  			
B2 = Ledy;

void Timer0()
{
	Over++;
	if Over > 9 then
	TR0 = 1;
	INT0 = 0;
}
void Int0()
{
	TR0 = 0;
	INT0 = 0;
	Error.1 = 1;
}
}




 